package com.wei.czz.framework.store.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wei.czz.common.po.store.AssignStoreListPo;
import com.wei.czz.common.vo.store.assign.AssignFormVo;
import com.wei.czz.framework.store.entity.AssignStoreEntity;
import com.wei.czz.framework.store.entity.StoreEntity;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

/**
 * Created by IntelliJ IDEA.
 *
 * @author wei
 * date: 2023-12-01 11:37:24
 * className: AssignStoreDao
 * version: 1.0
 * description:
 */
public interface AssignStoreDao extends BaseMapper<AssignStoreEntity> {

    /**
     * 分页查询商店分单数据
     * @param page mp分页对象
     * @param assignFormVo 参数对象
     * @return 查询结果
     */
    Page<AssignStoreListPo> selectAssignStorePageList(Page<AssignStoreListPo> page,
                                                @Param("assignFormVo") AssignFormVo assignFormVo);

    /**
     * 分页查询可以分单商店
     * @param page         mp分页对象
     * @param assignFormVo 参数对象
     * @return 商店分页数据
     */
    Page<AssignStoreListPo> selectAssignableStorePageList(Page<AssignStoreListPo> page,
                                                          @Param("assignFormVo") AssignFormVo assignFormVo);

    /**
     * 查询用户被分单商店
     * @param userId       用户主键
     * @param deleteStatus 删除状态
     * @return 商店列表
     */
    List<StoreEntity> selectUserAssignStoreList(@Param("userId") Long userId,
                                                @Param("deleteStatus") Integer deleteStatus);

    /**
     * 查询用户被分单商店数量
     * @param userId       用户主键
     * @param deleteStatus 删除状态
     * @return 商店数量
     */
    Integer selectUserAssignStoreCount(@Param("userId") Long userId, @Param("deleteStatus") Integer deleteStatus);

    /**
     * 查询提交审核商店所属的用户主键
     * @param userId       用户主键
     * @param deleteStatus 删除状态
     * @return 用户主键集合
     */
    Set<Long> selectStoreUserIdSet(@Param("userId") Long userId, @Param("deleteStatus") Integer deleteStatus);

}
